#include "configvalue.h"
#include <cassert>

namespace cores
{
    namespace datas
    {
        namespace configures
        {
            Value::Value()
            {}

            Value::~Value()
            {}

            string Value::toString() const
            {
                assert(false);
                return string();
            }

            int Value::toInt() const
            {
                assert(false);
                return -1;
            }

            double Value::toDouble() const
            {
                assert(false);
                return 0.0;
            }

            bool Value::toBool() const
            {
                assert(false);
                return false;
            }
       
            IntValue::IntValue(const int& value) : Value(), _value(value) 
            {}

            IntValue::~IntValue()
            {}

            int IntValue::toInt() const
            {
                return _value;
            }

            string IntValue::toString() const
            {
                return to_string(_value);
            }

            StringValue::StringValue(const string& value) : Value(), _value(value)
            {}

            StringValue::~StringValue()
            {}

            string StringValue::toString() const
            {
                return _value;
            }

            DoubleValue::DoubleValue(const double &value) : Value(), _value(value)
            {}

            DoubleValue::~DoubleValue()
            {}

            double DoubleValue::toDouble() const
            {
                return _value;
            }

            string DoubleValue::toString() const
            {
                return to_string(_value);
            }

            BoolValue::BoolValue(const bool &value) : Value(), _value(value)
            {}

            BoolValue::~BoolValue()
            {}

            bool BoolValue::toBool() const
            {
                return _value;
            }

            string BoolValue::toString() const
            {
                return _value ? "true" : "false";
            }
        }
    }
}